package com.yxx.service;

import com.yxx.entity.Tag;
import com.yxx.entityModel.vo.Result.PageResult;
import com.yxx.entityModel.vo.query.ArticleConditionQuery;
import com.yxx.entityModel.vo.query.TagQuery;
import com.yxx.entityModel.vo.request.TagRequest;
import com.yxx.entityModel.vo.response.ArticleConditionListResponse;
import com.yxx.entityModel.vo.response.TagBackResponse;
import com.yxx.entityModel.vo.response.TagOptionResponse;
import com.yxx.entityModel.vo.response.TagResponse;

import java.util.List;

/**
 * 标签服务接口
 * @author yuxiangxun
 * @date 2025/2/2
 * @apiNote
 */
public interface TagService {
    /**
     * 查看后台标签列表
     * @param tagQuery
     * @return
     */
    PageResult<TagBackResponse> tagBackListVO(TagQuery tagQuery);

    /**
     * 添加标签
     * @param tagRequest
     */
    void addTag(TagRequest tagRequest);

    /**
     * 删除标签
     * @param tagIdList
     */
    void deleteTag(List<Integer> tagIdList);

    /**
     * 修改标签
     * @param tagRequest
     */
    void updateTag(TagRequest tagRequest);

    /**
     * 查看标签选项
     * @return
     */
    List<TagOptionResponse> tagListOption();

    /**
     * 查看标签列表
     * @return
     */
    List<TagResponse> tagListVO();

    /**
     *查看标签下的文章列表
     * @param articleConditionQuery
     * @return
     */
    ArticleConditionListResponse articleTagList(ArticleConditionQuery articleConditionQuery);

    /**
     * 批量添加标签
     * @param newTagList
     */
    void saveBatch(List<Tag> newTagList);
}
